d1667dabbf06445dad2be6640a41e6f37ddda3ab,src/org/pentaho/di/job/entries/ftpput/JobEntryFTPPUT.java,JobEntryFTPPUT,execute,#Result#number#Repository#Job#,433

Before Change


            if (activeConnection)
            {
                ftpclient.setConnectMode(FTPConnectMode.ACTIVE);
                if (log.isDetailed()) log.logDetailed(toString(), "set active ftp connection mode");
            }
            else
            {
                ftpclient.setConnectMode(FTPConnectMode.PASV);
                if (log.isDetailed()) log.logDetailed(toString(), "set passive ftp connection mode");
            }
			
        	// Set the timeout
			ftpclient.setTimeout(timeout);
			if (log.isDetailed()) log.logDetailed(toString(), "set timeout to "+timeout);
			
			ftpclient.setControlEncoding(controlEncoding);
			if (log.isDetailed()) log.logDetailed(toString(), "set control encoding to "+controlEncoding);

			// login to ftp host ...
            ftpclient.connect();
			ftpclient.login(realUsername, realPassword);
				
			
			//  Remove password from logging, you don't know where it ends up.
			if (log.isDetailed()) log.logDetailed(toString(), "logged in with user "+realUsername);

			// move to spool dir ...
			if (!Const.isEmpty(realRemoteDirectoty))
			{
				ftpclient.chdir(realRemoteDirectoty);
				if (log.isDetailed()) log.logDetailed(toString(), "Changed to directory ["+realRemoteDirectoty+"]");
			}
			
			// Get all the files in the local directory...
			int x = 0;
			
			// Joerg:  ..that's for Java5 
			// ArrayList<String> myFileList = new ArrayList<String>();
			ArrayList<String> myFileList = new ArrayList<String>();
			
			
			File localFiles = new File(realLocalDirectory);
			File[] children = localFiles.listFiles();
			for (int i=0; i<children.length; i++) {
	            // Get filename of file or directory
				if (!children[i].isDirectory()) {
					// myFileList.add(children[i].getAbsolutePath());
					myFileList.add(children[i].getName());
					x = x+1;
					
				}
	        } // end for
			
			// Joerg:  ..that's for Java5
			// String[] filelist = myFileList.toArray(new String[myFileList.size()]);
			
			String[] filelist = new String[myFileList.size()];
			myFileList.toArray(filelist);
			
			
			if (log.isDetailed()) log.logDetailed(toString(), "Found "+filelist.length+" files in the local directory");
			
			Pattern pattern = null;
			if (!Const.isEmpty(realWildcard)) 
			{
				pattern = Pattern.compile(realWildcard);
				
			} // end if
			
			
			// Get the files in the list and execute ftp.put() for each file
			for (int i=0;i<filelist.length && !parentJob.isStopped();i++)
			{
				boolean getIt = true;
				
				// First see if the file matches the regular expression!
				if (pattern!=null)
				{
					Matcher matcher = pattern.matcher(filelist[i]);
					getIt = matcher.matches();
				}
				
				if (getIt)
				{
					if (!ftpclient.exists(filelist[i]) || (ftpclient.exists(filelist[i]) && !onlyPuttingNewFiles))
					{
						if (log.isDebug()) log.logDebug(toString(), "putting file ["+filelist[i]+"] to directory ["+realRemoteDirectoty+"]");
						
						String localFilename = realLocalDirectory+Const.FILE_SEPARATOR+filelist[i]; 
						ftpclient.put(localFilename, filelist[i]);
						
						filesput++;
					
						// Delete the file if this is needed!
						if (remove) 
						{
							children[i].delete();
							if (log.isDetailed()) log.logDetailed(toString(), "deleted local file ["+filelist[i]+"]");
						}
					}
				}
			}
		
			result.setResult( true );
			if (log.isDetailed()) log.logDebug(toString(), "We have put " + filesput);
		}
		catch(Exception e)
		{
			result.setNrErrors(1);
			log.logError(toString(), "Error getting files from SFTP : "+e.getMessage());
            log.logError(toString(), Const.getStackTracker(e));
		} finally 
		{

After Change


			if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.SetTimeout",""+timeout));
			
			ftpclient.setControlEncoding(controlEncoding);
			if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.SetEncoding",controlEncoding));

			// login to ftp host ...
            ftpclient.connect();
			ftpclient.login(realUsername, realPassword);
				
			
			//  Remove password from logging, you don't know where it ends up.
			if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.Logged",realUsername));

			// move to spool dir ...
			if (!Const.isEmpty(realRemoteDirectory))
			{
				ftpclient.chdir(realRemoteDirectory);
				if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.ChangedDirectory",realRemoteDirectory));
			}
			
			// Get all the files in the local directory...
			int x = 0;
			
			// Joerg:  ..that's for Java5 
			// ArrayList<String> myFileList = new ArrayList<String>();
			ArrayList<String> myFileList = new ArrayList<String>();
			
			
			File localFiles = new File(realLocalDirectory);
			File[] children = localFiles.listFiles();
			for (int i=0; i<children.length; i++) {
	            // Get filename of file or directory
				if (!children[i].isDirectory()) {
					// myFileList.add(children[i].getAbsolutePath());
					myFileList.add(children[i].getName());
					x = x+1;
					
				}
	        } // end for
			
			// Joerg:  ..that's for Java5
			// String[] filelist = myFileList.toArray(new String[myFileList.size()]);
			
			String[] filelist = new String[myFileList.size()];
			myFileList.toArray(filelist);
			
			
			if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.FoundFileLocalDirectory",""+filelist.length,realLocalDirectory));
			
			Pattern pattern = null;
			if (!Const.isEmpty(realWildcard)) 
			{
				pattern = Pattern.compile(realWildcard);
				
			} // end if
			
			
			// Get the files in the list and execute ftp.put() for each file
			for (int i=0;i<filelist.length && !parentJob.isStopped();i++)
			{
				boolean getIt = true;
				
				// First see if the file matches the regular expression!
				if (pattern!=null)
				{
					Matcher matcher = pattern.matcher(filelist[i]);
					getIt = matcher.matches();
				}
				
				if (getIt)
				{
					if (!ftpclient.exists(filelist[i]) || (ftpclient.exists(filelist[i]) && !onlyPuttingNewFiles))
					{
						if (log.isDebug()) log.logDebug(toString(), Messages.getString("JobFTPPUT.Log.PuttingFileToRemoteDirectory",filelist[i],realRemoteDirectory));
						
						String localFilename = realLocalDirectory+Const.FILE_SEPARATOR+filelist[i]; 
						ftpclient.put(localFilename, filelist[i]);
						
						filesput++;
					
						// Delete the file if this is needed!
						if (remove) 
						{
							children[i].delete();
							if (log.isDetailed()) log.logDetailed(toString(), Messages.getString("JobFTPPUT.Log.DeletedFile",filelist[i]));
						}
					}
				}
			}
		
			result.setResult( true );
			if (log.isDetailed()) log.logDebug(toString(), Messages.getString("JobFTPPUT.Log.WeHavePut",""+filesput));
		}
		catch(Exception e)
		{
			result.setNrErrors(1);
			log.logError(toString(), Messages.getString("JobFTPPUT.Log.ErrorPuttingFiles",e.getMessage()));
            log.logError(toString(), Const.getStackTracker(e));
		} finally 
		{